package com.hyts.bmsp.plugin;

import com.hyts.bmsp.error.ProcessError;
import org.apache.log4j.Logger;

import redis.clients.jedis.Protocol;

import com.jfinal.config.Plugins;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.redis.RedisPlugin;

/**
 * @ClassName: RedisSupportPlugin
 * @Description: RedisPlugin 是支持 Redis 的极速化插件。使用 RedisPlugin 可以极度方便的使用 redis，该<br>
				  插件不仅提供了丰富的 API，而且还同时支持多 redis 服务端。Redis 拥有超高的性能，丰富的<br>
				  数据结构，天然支持数据持久化，是目前应用非常广泛的 nosql 数据库。对于 redis 的有效应<br>
				  用可极大提升系统性能，节省硬件成本。<br>
 * @author: 李博/Alex
 * @date: 2017-1-8 上午11:02:02
 */
@SuppressWarnings("unused")
public class RedisSupportPlugin {
	/**
	 * @fieldName: REDIS_PROPERTIES_FILE_PATH
	 * @fieldType: String
	 * @Description: 系统redis数据库连接池参数配置信息
	 */
	private static final String REDIS_PROPERTIES_FILE_PATH = "redis.properties";
	
	/**
	 * @fieldName: logger
	 * @fieldType: Logger
	 * @Description: Logger日志输出器
	 */
	private static final Logger logger = Logger.getLogger(DruidSupportPlugin.class);
	
	/**
	 * @fieldName: redisPlugin
	 * @fieldType: RedisPlugin
	 * @Description: Redis存储缓存服务器数据库插件对象
	 */
	private RedisPlugin redisPlugin;
	
	/**
	 * @Title:RedisSupportPlugin
	 * @Description:启动RedisPlugin插件服务
	 * @param plugin
	 */
	public RedisSupportPlugin(Plugins plugin) {
		logger.info("加载Redis服务-进行启动Redis数据存储服务插件.......");
		if(plugin == null)
			logger.error("启动RedisPlugin服务失败或者RedisPlugin为空!", new ProcessError());
		PropKit.use(REDIS_PROPERTIES_FILE_PATH);
		if(redisPlugin == null){
			redisPlugin = new RedisPlugin(PropKit.get("cacheName","Jfinal"),
										  PropKit.get("host",Protocol.DEFAULT_HOST),
										  PropKit.getInt("port", Protocol.DEFAULT_PORT),
										  PropKit.getInt("timeout", Protocol.DEFAULT_TIMEOUT),
										  PropKit.get("password"),PropKit.getInt("database",
										  Protocol.DEFAULT_DATABASE),PropKit.get("lientNam"));
		}
		plugin.add(redisPlugin);
	}

	public RedisPlugin getRedisPlugin() {
		return redisPlugin;
	}

	public void setRedisPlugin(RedisPlugin redisPlugin) {
		this.redisPlugin = redisPlugin;
	}
	
	
}
